#ifndef HTTP_SESSION_HPP
#define HTTP_SESSION_HPP

#include <boost/asio.hpp>
#include <memory>
#include <string>

/* 管理单个客户端连接/会话，进行实际的通信 */
class HttpSession : public std::enable_shared_from_this<HttpSession>
{
public:
    HttpSession(boost::asio::ip::tcp::socket socket);
    void start();

private:
    void do_read();
    void do_write(const std::string &response);
    void do_error(const boost::system::error_code& ec);

private:
    boost::asio::ip::tcp::socket socket_; // 与当前客户端连接的套接字
    boost::asio::streambuf read_buffer_;       // 用于缓冲从客户端读取的数据，它是一个高效的缓冲区类，可以与 Boost.Asio 的异步 I/O 操作结合使用
};

#endif // HTTP_SESSION_HPP
